package com.microtf.inscription.framework.annotation;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 表单生成器表单元素注释
 * @author guliuzhong
 */
@Target({ ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FieldAnnotation{
    /**
     * 字段标题
     * @return 标题
     */
    @AliasFor("title")
    String value() default "";
    /**
     * 字段标题
     * @return 标题
     */
    @AliasFor("value")
    String title() default "";
    /**
     * 提示信息
     * 支持HTML
     * @return 提示信息
     */
    String tip()   default "";

    /**
     * 字段排序
     * @return 数字
     */
    int order() default 0;

    /**
     * 是否隐藏
     * @return default false;
     */
    boolean hide() default false;
    /**
     * 是大段文本
     * @return default false;
     */
    boolean largeText() default false;

    /**
     * 使用HTML编辑器
     * @return default false;
     */
    boolean htmlEditor() default false;
    /**
     * 上传文件仅HTML生效
     * @return default false;
     */
    boolean htmlEditorUpload() default false;
    /**
     * list类型数据列表
     * 偶数为下拉表值，奇数为显示值
     * @return 列表
     */
    String[] listData() default "";

    /**
     * list读取的bean name
     * @return Spring格式的beanName
     */
    String listBeanName() default "";
    /**
     * 使用bean 时读取数据方法，方法名
     *
     *  需要无参数且返回FormSelect数据
     *
     *  @return 方法名
     */
    String listMethod() default "";

    /**
     * 选择框多选
     * @return 是否多选 默认为否
     */
    boolean multiple() default false;

}
